package com.hall.dao;

import com.hall.pojo.Appointment;
import com.hall.pojo.SysUser;
import com.hall.pojo.UserFans;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

@Mapper
@Repository
public interface AttentionMapper {
    /**
     * 通过角色ID查找关注列表
     *
     * @param id     角色ID
     * @param is_del 关注状态
     * @return 关注中的用户列表
     */
    List<SysUser> findAttentionById(@Param("id") String id, @Param("is_del") int is_del, @Param("name") String name);

    /**
     * 取消用户关注
     *
     * @param be_subscribe 被关注者id
     * @param subscribe    登录用户id
     * @return 结果
     */
    int cancelAttentionById(@Param("is_del") int is_del, @Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);

    /**
     * 通过角色ID查找收藏列表
     *
     * @param id     角色ID
     * @param is_del 收藏状态
     * @return 收藏中的会诊列表
     */
    List<Appointment> findCollectById(@Param("id") String id, @Param("is_del") int is_del);

    /**
     * 取消会议收藏
     *
     * @param be_subscribe 被收藏会议的id
     * @param subscribe    登录用户id
     * @return 结果
     */
    int cancelCollectById(@Param("is_del") int is_del, @Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);

    /**
     * 添加用户收藏
     *
     * @param be_subscribe 被收藏的id
     * @param subscribe    登录用户id
     * @return 结果
     */
    int addCollect(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);

    /**
     * 添加用户关注
     *
     * @param be_subscribe 被关注的id
     * @param subscribe    关注者id
     * @return 结果
     */
     int addAttention(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);
    /**
     * 查询我的收藏列表
     *
     * @param subscribe 登录用户id
     * @return 所有我收藏的会诊
     */
    List<String> isCollect(@Param("subscribe") String subscribe);

    /**
     * 查询我的收藏列表
     *
     * @param subscribe 登录用户id
     * @return 所有我关注的用户id集合
     */
    List<String> attentionIdList(@Param("subscribe") String subscribe);

    /**
     * 按条件查询关注
     *
     * @param id     角色ID
     * @param is_del 关注状态
     * @param index  检索条件
     * @return 匹配的关注用户
     */
    List<SysUser> selectAttention(@Param("id") String id, @Param("is_del") int is_del, @Param("index") String index);

    /**
     * 按条件查找收藏列表
     *
     * @param id     角色ID
     * @param is_del 收藏状态
     * @param index  检索条件
     * @return 匹配的收藏列表
     */
    List<Appointment> selectCollect(@Param("id") String id, @Param("is_del") int is_del, @Param("index") String index);

    /**
     * 查询该次收藏是否是曾经收藏过的会议
     *
     * @param be_subscribe 被收藏对象的id
     * @param subscribe    登录用户id
     * @return 匹配的条数
     */
    int pastselect(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);
    /**
     * 查询该次关注是否是曾经关注过的用户
     *
     * @param be_subscribe 被收藏对象的id
     * @param subscribe    登录用户id
     * @return 匹配的条数
     */
    int pastselects(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);

    /**
     * 修改之前取消收藏的状态变为重新收藏
     *
     * @param be_subscribe 被收藏对象的id
     * @param subscribe    登录用户id
     * @return 匹配的条数
     */
    int updatecollect(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);

    /**
     * 修改之前取消关注的状态变为重新关注
     *
     * @param be_subscribe 被收藏对象的id
     * @param subscribe    登录用户id
     * @return 匹配的条数
     */
    int updateAttention(@Param("be_subscribe") String be_subscribe, @Param("subscribe") String subscribe);
    /**
     * 粉丝列表
     *
     * @param id 登录id
     * @return 匹配的条数
     */
    List<SysUser> findFansList(@Param("id") String id);
}
